import sige.Permissoes
import sige.Pessoa
import sige.Usuario
import sige.Grupo
import sige.Ordem
import org.codehaus.groovy.grails.commons.ApplicationHolder

class BootStrap {

    def init = { servletContext ->
        try{
            if(! Pessoa.list() ){
                Pessoa pessoa = new Pessoa(nome: 'administrador' , email: 'admin@mail.com')
                if(!pessoa.save(flush: true)){
                    println("Pessoa padrão não pode ser salva")
                    println (pessoa.errors)
                }
                Usuario user = new Usuario(login: 'admin' , senha: 'admin@sige.com' , ativo: true)
                Grupo grupo = new Grupo(nome: 'admin')
                if( !grupo.save(flush: true)){
                    println("Grupo padrão não pode ser salvo")
                    println (grupo.errors)
                }
                user.grupo = grupo
                user.pessoa = pessoa
                if( !user.save(flush: true) ){
                    println("Usuario padrão não pode ser salvo")
                    println (user.errors)
                }
            }
        }catch(e){
            println e
        }
        
        
        def grailsApplication = ApplicationHolder.application
        for(c in grailsApplication.controllerClasses){
            def p
            if(c.logicalPropertyName == "dbdoc" || c.logicalPropertyName == "login"){
                continue
            }
            try{
                def permissao = new Permissoes( controlador: c.logicalPropertyName)
                permissao.save(flush: true)
            }catch(e){println e}
        }
        def grupo = Grupo.get(1L)
        grupo.permissoes = Permissoes.list()
        grupo.save(flush: true)
        
        // ------ Salvando Ordens -------\\
        
        def ordens = [
            [nome: "Salário dos Funcionários", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Anuidades", comportamento: 'despesaVariavel', tipo :"Receita"],
            [nome: "Recebimento Diverso", comportamento: 'despesaVariavel', tipo :"Receita"],
            [nome: "Água Luz e Telefone", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Aluguel", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Imposto Simples (DAS)", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Imposto Simples (ALVARÁ)", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Imposto Simples (IPTU)", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Imposto de Renda", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Material de Consumo", comportamento: 'despesaVariavel', tipo :"Despesa"],
            [nome: "Material de Escritório", comportamento: 'despesaVariavel', tipo :"Despesa"],
            [nome: "Pró-Labore", comportamento: 'despesaDiversa', tipo :"Despesa"],
            [nome: "Propaganda", comportamento: 'despesaDiversa', tipo :"Despesa"],
            [nome: "1/3 de Férias dos funcionários", comportamento: 'despesaDiversa', tipo :"Despesa"],
            [nome: "Serviços contábeis", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "GPS", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "FGTS", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Rescisão de contrato", comportamento: 'despesaDiversa', tipo :"Despesa"],
            [nome: "Bens e Utensílios", comportamento: 'despesaVariavel', tipo :"Despesa"],
            [nome: "Profisionalização de professores (CURSO)", comportamento: 'despesaDiversa', tipo :"Despesa"],
            [nome: "13 salário", comportamento: 'despesaFixa', tipo :"Despesa"],
            [nome: "Empréstimo Caixa", comportamento: 'despesaVariavel', tipo :"Despesa"]
        ]
        
        ordens.each{
            Ordem ordem = new Ordem (it)
            ordem.save(flush: true);
        }
        
        
    }
    
    def destroy = {
    }
    
    
}
